<?php
// ------------------------------------------------------------------------
// |@Author       : Jarmin <edshop@qq.com>
// |@----------------------------------------------------------------------
// |@Date         : 2023-05-10 16:49:27
// |@----------------------------------------------------------------------
// |@LastEditTime : 2023-05-26 18:48:26
// |@----------------------------------------------------------------------
// |@LastEditors  : Jarmin <jarmin@ladmin.cn>
// |@----------------------------------------------------------------------
// |@Description  : 
// |@----------------------------------------------------------------------
// |@FilePath     : Role.php
// |@----------------------------------------------------------------------
// |@Copyright (c) 2023 http://www.ladmin.cn   All rights reserved. 
// ------------------------------------------------------------------------
namespace app\api\controller;

use think\admin\Controller;

class Role extends Controller
{
    /**
     * 获取所有角色列表，支持分页
     * @return mixed 返回成功或失败的提示信息以及分页的角色列表
     */
    public function list()
    {
        if ($this->request->isGet()) {
            // 查询角色信息
            $list = $this->modelRole->listRole($this->app->request->param());
            // 构造包含分页信息的返回结果
            $data = [
                'page' => $this->app->request->param('page'),
                'pageSize' => $this->app->request->param('pageSize'),
                'total'=> $list['total'],
                'rows' => $list['data'],
            ];
            return $this->success(lang('role.info_get_success'), $data);
        }
    }

    /**
     * 获取指定角色的授权信息
     * @return mixed 返回成功或失败的提示信息以及指定角色的授权信息
     */
    public function auth()
    {
        if ($this->request->isGet()) {
            // 查询角色的授权信息
            $list = $this->modelAuth->listAuth($this->app->request->param());
            return $this->success(lang('role.auth_get_success'), $list);
        }
    }

    /**
     * 添加或修改角色信息
     * @validate true
     * @sing true
     * @mixed validate true
     * @return mixed 返回成功或失败的提示信息以及添加或修改后的角色信息
     */
    public function save()
    {
        if ($this->request->isPost()) {
            $result = $this->modelRole->saveRole($this->app->request->post());
            return $this->success(lang('role.edit_success'),$result);
        }
    }

    /**
     * 启用或禁用角色
     * @sing true
     * @return mixed 返回成功或失败的提示信息以及启用或禁用后的角色信息
     */
    public function state()
    {
        if ($this->request->isPut()) {
            $result = $this->modelRole->stateRole($this->app->request->put());
            return $this->success(lang('role.state_success'),$result);
        }
    }

    /**
     * 为角色分配权限
     * @validate true
     * @sing true
    * @return mixed 返回成功或失败的提示信息以及分配权限后的角色信息
    */
    public function allot()
    {
        if ($this->request->isPost()) {
            // 分配权限
            $result = $this->modelRole->allotRole($this->app->request->post());
            return $this->success(lang('role.allot_success'), $result);
        }
    }

    /**
     * 根据角色 ID 删除角色及其所有相关权限信息
     * @validate true
     * @sing true
     * @return mixed 返回成功或失败的提示信息以及删除的角色信息
     */
    public function remove()
    {
        if ($this->request->isDelete()) {
            // 删除角色及其所有相关权限信息
            $result = $this->modelRole->removeRole($this->app->request->delete());
            return $this->success(lang('role.delete_success'), $result);
        }
    }
}